FROM nginx:1.24.0 AS builder

LABEL maintainer="brianhsiung@outlook.com"

ENV NGINX_VERSION 1.24.0

COPY ngx_brotli /usr/src/ngx_brotli
COPY nginx-module-vts /usr/src/nginx-module-vts
COPY ngx_http_geoip2_module /usr/src/ngx_http_geoip2_module
COPY nginx_upstream_check_module /usr/src/nginx_upstream_check_module

RUN set -x \
    && sed -i \
           -e 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' \
           -e 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y \
       --no-install-recommends \
       --no-install-suggests \
       ca-certificates \
       build-essential \
       libbrotli-dev \
       gettext-base \
       gnupg1 \
       zlib1g-dev \
       libpcre3 \
       libpcre3-dev \
       uuid-dev \
       libssl-dev \
       tar \
       curl \
       cmake \
       libmaxminddb-dev \
       libmaxminddb0 \
       mmdb-bin

RUN curl http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz | tar -xz -C /usr/src \
    && cd /usr/src/nginx-$NGINX_VERSION \
    && patch -p1 < /usr/src/nginx_upstream_check_module/check_1.20.1+.patch

# CONFARGS=$(nginx -V 2>&1 | sed -n -e 's/^.*arguments: //p') \
# CONFARGS=${CONFARGS/-Os -fomit-frame-pointer -g/-Os} && \

RUN cd /usr/src/nginx-$NGINX_VERSION && \
    ./configure --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib/nginx/modules \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --http-client-body-temp-path=/var/cache/nginx/client_temp \
    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
    --user=nginx \
    --group=nginx \
    --with-compat \
    --with-file-aio \
    --with-threads \
    --with-http_addition_module \
    --with-http_auth_request_module \
    --with-http_dav_module \
    --with-http_flv_module \
    --with-http_gunzip_module \
    --with-http_gzip_static_module \
    --with-http_mp4_module \
    --with-http_random_index_module \
    --with-http_realip_module \
    --with-http_secure_link_module \
    --with-http_slice_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_v2_module \
    --with-mail \
    --with-mail_ssl_module \
    --with-stream \
    --with-stream_realip_module \
    --with-stream_ssl_module \
    --with-stream_ssl_preread_module \
    --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' \
    --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' \
    --add-module=/usr/src/nginx_upstream_check_module \
    --add-module=/usr/src/ngx_brotli \
    --add-module=/usr/src/ngx_http_geoip2_module --with-stream \
    --add-module=/usr/src/nginx-module-vts && \
    #--add-dynamic-module=/usr/src/ngx_brotli \
    #--add-dynamic-module=/usr/src/nginx-module-vts && \
    make && make install

FROM nginx:1.24.0

RUN set -x \
    && sed -i \
           -e 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' \
           -e 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
    && apt-get update \
    && apt-get install -y \
       --no-install-recommends \
       --no-install-suggests \
       libmaxminddb-dev \
       libmaxminddb0 \
       mmdb-bin \
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; echo "Asia/Shanghai" > /etc/timezone \
    && rm -rf /var/lib/apt/lists/*

COPY --from=builder /usr/sbin/nginx /usr/sbin/nginx
